#ifndef GAMEENGINE_GAMEPLAY_OBJECTS_OBJECT_WORLD_H
#define GAMEENGINE_GAMEPLAY_OBJECTS_OBJECT_WORLD_H

#include <GameEngine/Gameplay/gameplay_settings.h>

#include <GameEngine/Gameplay/Objects/object_base.h>
#include <GameEngine/Core/Classes/rtti.h>
#include <GameEngine/Geometry/Location/point3d.h>


#ifdef GAMEENGINE_NAMESPACES
namespace GameEngine {
#endif

//=================================================================================


//! An object that has a position and an orientation in the world
/*!
 *  A world object is an object that have some 3D coordinates in the world. A world
 *  object has no information of the world where it resides, however. Additional
 *  data must be stored to desambiguate between multiple worlds.
 */
class _Gameplay_decl ObjectWorld : public ObjectBase {
	GAMEENGINE_DECLARE_RTTI_PARENT(ObjectWorld,ObjectBase)
	Q_OBJECT

public:
	ObjectWorld();
	ObjectWorld(const ObjectWorld& rhs);
	ObjectWorld& operator=(const ObjectWorld& rhs);
	virtual ~ObjectWorld();

	const Point3d<float>& pos() const;
	Point3d<float>& pos();

protected:
	//! The position of the object
	Point3d<float> pos_;
};

//========================================================

#ifdef GAMEENGINE_NAMESPACES
} // namespace GameEngine
#endif

#endif
